package _2022.hot100._236_二叉树的最近公共祖先;

import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;

/**
 * @author： YHSimon
 * @date： 2022-05-18 08:54
 */

public class Solution2 {
    Map<Integer,TreeNode> parent=new HashMap<>();
    Set<Integer> visited=new HashSet<>();

    public void dfs(TreeNode root){
        if(root.left!=null){
            parent.put(root.left.val, root);
            dfs(root.left);
        }

        if(root.right!=null){
            parent.put(root.right.val, root);
            dfs(root.right);
        }
    }
    public TreeNode lowestCommonAncestor(TreeNode root,TreeNode p,TreeNode q){
        dfs(root);
        while(p!=null){
            visited.add(p.val);
            p=parent.get(p.val);
        }
        while(q!=null){
            if(visited.contains(q.val)){
                return q;
            }
            q=parent.get(q.val);
        }
        return null;
    }
}
